package io.github.echarts.option.component;

/**
 * 网格配置
 * 直角坐标系内绘图网格，单个 grid 内最多可以放置上下两个 X 轴，左右两个 Y 轴
 */
public class Grid {
    
    /**
     * 是否显示直角坐标系网格
     */
    private Boolean show;

    /**
     * grid 组件离容器左侧的距离
     * 可以是像素值（如 20），也可以是百分比（如 '20%'），还可以是 'left', 'center', 'right'
     * 如果 left 的值为 'left', 'center', 'right'，组件会根据相应的位置自动对齐
     */
    private String left;

    /**
     * grid 组件离容器上侧的距离
     * 可以是像素值（如 20），也可以是百分比（如 '20%'），还可以是 'top', 'middle', 'bottom'
     * 如果 top 的值为 'top', 'middle', 'bottom'，组件会根据相应的位置自动对齐
     */
    private String top;

    /**
     * grid 组件离容器右侧的距离
     * 可以是像素值（如 20），也可以是百分比（如 '20%'）
     */
    private String right;

    /**
     * grid 组件离容器下侧的距离
     * 可以是像素值（如 20），也可以是百分比（如 '20%'）
     */
    private String bottom;

    /**
     * grid 组件的宽度
     * 默认自适应
     */
    private String width;

    /**
     * grid 组件的高度
     * 默认自适应
     */
    private String height;

    /**
     * 是否包含坐标轴的刻度标签
     * true 表示坐标轴的刻度标签需要考虑在内
     * false 表示不考虑坐标轴的刻度标签，刻度标签可能会溢出容器
     */
    private Boolean containLabel;

    /**
     * 网格背景色，默认透明
     */
    private String backgroundColor;
    
    /**
     * 网格的边框颜色
     */
    private String borderColor;

    /**
     * 网格的边框线宽
     */
    private Integer borderWidth;

    /**
     * 图形阴影的模糊大小
     */
    private Integer shadowBlur;

    /**
     * 阴影颜色
     */
    private String shadowColor;

    /**
     * 阴影水平方向上的偏移距离
     */
    private Integer shadowOffsetX;

    /**
     * 阴影垂直方向上的偏移距离
     */
    private Integer shadowOffsetY;
    
    /**
     * 获取是否显示直角坐标系网格
     */
    public Boolean getShow() {
        return show;
    }
    
    /**
     * 设置是否显示直角坐标系网格
     */
    public void setShow(Boolean show) {
        this.show = show;
    }
    
    /**
     * 获取grid组件离容器左侧的距离
     */
    public String getLeft() {
        return left;
    }
    
    /**
     * 设置grid组件离容器左侧的距离
     */
    public Grid setLeft(String left) {
        this.left = left;
        return this;
    }
    
    /**
     * 获取grid组件离容器上侧的距离
     */
    public String getTop() {
        return top;
    }
    
    /**
     * 设置grid组件离容器上侧的距离
     */
    public Grid setTop(String top) {
        this.top = top;
        return this;
    }
    
    /**
     * 获取grid组件离容器右侧的距离
     */
    public String getRight() {
        return right;
    }
    
    /**
     * 设置grid组件离容器右侧的距离
     */
    public Grid setRight(String right) {
        this.right = right;
        return this;
    }
    
    /**
     * 获取grid组件离容器下侧的距离
     */
    public String getBottom() {
        return bottom;
    }
    
    /**
     * 设置grid组件离容器下侧的距离
     */
    public Grid setBottom(String bottom) {
        this.bottom = bottom;
        return this;
    }
    
    /**
     * 获取grid组件的宽度
     */
    public String getWidth() {
        return width;
    }
    
    /**
     * 设置grid组件的宽度
     */
    public Grid setWidth(String width) {
        this.width = width;
        return this;
    }
    
    /**
     * 获取grid组件的高度
     */
    public String getHeight() {
        return height;
    }
    
    /**
     * 设置grid组件的高度
     */
    public Grid setHeight(String height) {
        this.height = height;
        return this;
    }
    
    /**
     * 获取是否包含坐标轴的刻度标签
     */
    public Boolean getContainLabel() {
        return containLabel;
    }
    
    /**
     * 设置是否包含坐标轴的刻度标签
     */
    public void setContainLabel(Boolean containLabel) {
        this.containLabel = containLabel;
    }
    
    /**
     * 获取网格背景色
     */
    public String getBackgroundColor() {
        return backgroundColor;
    }
    
    /**
     * 设置网格背景色
     */
    public void setBackgroundColor(String backgroundColor) {
        this.backgroundColor = backgroundColor;
    }
    
    /**
     * 获取网格的边框颜色
     */
    public String getBorderColor() {
        return borderColor;
    }
    
    /**
     * 设置网格的边框颜色
     */
    public void setBorderColor(String borderColor) {
        this.borderColor = borderColor;
    }
    
    /**
     * 获取网格的边框线宽
     */
    public Integer getBorderWidth() {
        return borderWidth;
    }
    
    /**
     * 设置网格的边框线宽
     */
    public void setBorderWidth(Integer borderWidth) {
        this.borderWidth = borderWidth;
    }
} 